home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
kcl
/
akcl
/
akcl1615.lha
/
doc
/
c-gc.doc
< prev
next >
Wrap
Lisp/Scheme
|
1987-11-16
|
1KB
|
33 lines
We have implemented garbage collection of the c stack.
Thus any new cons or other data type, may be safely left
on the c stack or in a register, without fear of lossage
due to garbage collection. This enables us to write smaller
faster code. We have implemented a scheme for putting
frequently used variables, and those inside loops, into registers.
For example the compiled sloop.lsp file now has text size
48704, but had text size 53120 or 1.09 times larger.
If functions are proclaimed to be of fixed number of args,
the code is also substantially better. For example if you
have the code:
(proclaim '(function memb (t t) t))
(defun memb (a b)
(sloop for v on b when (eq (car v) a) do (return v)))
If we consider calls where a is the 4'th element of b,
then memb runs two times faster than before: On a sun 3-50
19.6 seconds for 1,000,000 iterations, as opposed to 39.6 seconds
without the new modifications to c-gc and the compiler.
(defun try (n a b) (sloop for i below n do (memb a b)))
Currently if the variable compiler::*c-gc* is not nil,
the compiler outputs code under the assumption that c-gc is working.